# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Content.V21.Model.Metrics do
  @moduledoc """
  Performance metrics. Values are only set for metrics requested explicitly in the request's search query.

  ## Attributes

  *   `aos` (*type:* `float()`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Average order size - the average number of items in an order. **This metric cannot be segmented by product dimensions and customer_country_code.**
  *   `aovMicros` (*type:* `float()`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Average order value in micros (1 millionth of a standard unit, 1 USD = 1000000 micros) - the average value (total price of items) of all placed orders. The currency of the returned value is stored in the currency_code segment. If this metric is selected, 'segments.currency_code' is automatically added to the SELECT clause in the search query (unless it is explicitly selected by the user) and the currency_code segment is populated in the response. **This metric cannot be segmented by product dimensions and customer_country_code.**
  *   `clicks` (*type:* `String.t`, *default:* `nil`) - Number of clicks.
  *   `conversionRate` (*type:* `float()`, *default:* `nil`) - Number of conversions divided by the number of clicks, reported on the impression date. The metric is currently available only for the `FREE_PRODUCT_LISTING` program.
  *   `conversionValueMicros` (*type:* `String.t`, *default:* `nil`) - Value of conversions in micros (1 millionth of a standard unit, 1 USD = 1000000 micros) attributed to the product, reported on the conversion date. The metric is currently available only for the `FREE_PRODUCT_LISTING` program. The currency of the returned value is stored in the currency_code segment. If this metric is selected, 'segments.currency_code' is automatically added to the SELECT clause in the search query (unless it is explicitly selected by the user) and the currency_code segment is populated in the response.
  *   `conversions` (*type:* `float()`, *default:* `nil`) - Number of conversions attributed to the product, reported on the conversion date. Depending on the attribution model, a conversion might be distributed across multiple clicks, where each click gets its own credit assigned. This metric is a sum of all such credits. The metric is currently available only for the `FREE_PRODUCT_LISTING` program.
  *   `ctr` (*type:* `float()`, *default:* `nil`) - Click-through rate - the number of clicks merchant's products receive (clicks) divided by the number of times the products are shown (impressions).
  *   `daysToShip` (*type:* `float()`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Average number of days between an order being placed and the order being fully shipped, reported on the last shipment date. **This metric cannot be segmented by product dimensions and customer_country_code.**
  *   `impressions` (*type:* `String.t`, *default:* `nil`) - Number of times merchant's products are shown.
  *   `itemDaysToShip` (*type:* `float()`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Average number of days between an item being ordered and the item being **This metric cannot be segmented by customer_country_code.**
  *   `itemFillRate` (*type:* `float()`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Percentage of shipped items in relation to all finalized items (shipped or rejected by the merchant; unshipped items are not taken into account), reported on the order date. Item fill rate is lowered by merchant rejections. **This metric cannot be segmented by customer_country_code.**
  *   `orderedItemSalesMicros` (*type:* `String.t`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Total price of ordered items in micros (1 millionth of a standard unit, 1 USD = 1000000 micros). Excludes shipping, taxes (US only), and customer cancellations that happened within 30 minutes of placing the order. The currency of the returned value is stored in the currency_code segment. If this metric is selected, 'segments.currency_code' is automatically added to the SELECT clause in the search query (unless it is explicitly selected by the user) and the currency_code segment is populated in the response. **This metric cannot be segmented by customer_country_code.**
  *   `orderedItems` (*type:* `String.t`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Number of ordered items. Excludes customer cancellations that happened within 30 minutes of placing the order. **This metric cannot be segmented by customer_country_code.**
  *   `orders` (*type:* `String.t`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Number of placed orders. Excludes customer cancellations that happened within 30 minutes of placing the order. **This metric cannot be segmented by product dimensions and customer_country_code.**
  *   `rejectedItems` (*type:* `String.t`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Number of ordered items canceled by the merchant, reported on the order date. **This metric cannot be segmented by customer_country_code.**
  *   `returnRate` (*type:* `float()`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Total price of returned items divided by the total price of shipped items, reported on the order date. If this metric is selected, 'segments.currency_code' is automatically added to the SELECT clause in the search query (unless it is explicitly selected by the user) and the currency_code segment is populated in the response. **This metric cannot be segmented by customer_country_code.**
  *   `returnedItems` (*type:* `String.t`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Number of ordered items sent back for return, reported on the date when the merchant accepted the return. **This metric cannot be segmented by customer_country_code.**
  *   `returnsMicros` (*type:* `String.t`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Total price of ordered items sent back for return in micros (1 millionth of a standard unit, 1 USD = 1000000 micros), reported on the date when the merchant accepted the return. The currency of the returned value is stored in the currency_code segment. If this metric is selected, 'segments.currency_code' is automatically added to the SELECT clause in the search query (unless it is explicitly selected by the user) and the currency_code segment is populated in the response. **This metric cannot be segmented by customer_country_code.**
  *   `shippedItemSalesMicros` (*type:* `String.t`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Total price of shipped items in micros (1 millionth of a standard unit, 1 USD = 1000000 micros), reported on the order date. Excludes shipping and taxes (US only). The currency of the returned value is stored in the currency_code segment. If this metric is selected, 'segments.currency_code' is automatically added to the SELECT clause in the search query (unless it is explicitly selected by the user) and the currency_code segment is populated in the response. **This metric cannot be segmented by customer_country_code.**
  *   `shippedItems` (*type:* `String.t`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Number of shipped items, reported on the shipment date. **This metric cannot be segmented by customer_country_code.**
  *   `shippedOrders` (*type:* `String.t`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Number of fully shipped orders, reported on the last shipment date. **This metric cannot be segmented by product dimensions and customer_country_code.**
  *   `unshippedItems` (*type:* `float()`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Number of ordered items not shipped up until the end of the queried day. If a multi-day period is specified in the search query, the returned value is the average number of unshipped items over the days in the queried period. **This metric cannot be segmented by customer_country_code.**
  *   `unshippedOrders` (*type:* `float()`, *default:* `nil`) - *Deprecated*: This field is no longer supported and retrieving it returns 0 starting from May 2024. Number of orders not shipped or partially shipped up until the end of the queried day. If a multi-day period is specified in the search query, the returned value is the average number of unshipped orders over the days in the queried period. **This metric cannot be segmented by product dimensions and customer_country_code.**
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :aos => float() | nil,
          :aovMicros => float() | nil,
          :clicks => String.t() | nil,
          :conversionRate => float() | nil,
          :conversionValueMicros => String.t() | nil,
          :conversions => float() | nil,
          :ctr => float() | nil,
          :daysToShip => float() | nil,
          :impressions => String.t() | nil,
          :itemDaysToShip => float() | nil,
          :itemFillRate => float() | nil,
          :orderedItemSalesMicros => String.t() | nil,
          :orderedItems => String.t() | nil,
          :orders => String.t() | nil,
          :rejectedItems => String.t() | nil,
          :returnRate => float() | nil,
          :returnedItems => String.t() | nil,
          :returnsMicros => String.t() | nil,
          :shippedItemSalesMicros => String.t() | nil,
          :shippedItems => String.t() | nil,
          :shippedOrders => String.t() | nil,
          :unshippedItems => float() | nil,
          :unshippedOrders => float() | nil
        }

  field(:aos)
  field(:aovMicros)
  field(:clicks)
  field(:conversionRate)
  field(:conversionValueMicros)
  field(:conversions)
  field(:ctr)
  field(:daysToShip)
  field(:impressions)
  field(:itemDaysToShip)
  field(:itemFillRate)
  field(:orderedItemSalesMicros)
  field(:orderedItems)
  field(:orders)
  field(:rejectedItems)
  field(:returnRate)
  field(:returnedItems)
  field(:returnsMicros)
  field(:shippedItemSalesMicros)
  field(:shippedItems)
  field(:shippedOrders)
  field(:unshippedItems)
  field(:unshippedOrders)
end

defimpl Poison.Decoder, for: GoogleApi.Content.V21.Model.Metrics do
  def decode(value, options) do
    GoogleApi.Content.V21.Model.Metrics.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Content.V21.Model.Metrics do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
